package com.taotao.job.core.executor;

import com.alibaba.fastjson.JSON;
import com.taotao.job.core.enums.StartType;
import lombok.Builder;
import lombok.Getter;

/**
 * @author fanbeibei
 * @version 1.0
 * @date 2021/2/4 14:20
 */
@Builder
@Getter
public class ExecutorContext {
    /**
     * 当前任务ID
     */
    private Long jobId;
    /**
     * 任务实例ID
     */
    private Long jobInstanceId;
    /**
     * 任务类型,参照{@link com.taotao.job.core.enums.JobType}
     */
    private Integer jobType;

    /**
     * 任务配置的参数
     */
    private String jobParam;
    /**
     * 广播参数,将传给每一个后置任务
     */
    private String broadcastParam;
    /**
     * 分片数
     */
    private int shardingCount = 1;

    /**
     * 分片索引
     */
    private int shardingIndex = 0;

    /**
     * 任务启动类型,参考{@link StartType}
     */
    private int startType;

    /**
     * 应该触发时间，有cron表达式的就是根据cron表达式算出来的时间，无cron取触发时时间
     */
    private long shouldTriggerTime;


    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }



}
